#ifndef ESTRUCTURAS_H_
#define ESTRUCTURAS_H_

#include "limits.h"
#include "Auto.h"

#define MTYPE_PROCESO_GENERAL 1
#define TIPO_MENSAJE_FIN 5

/*
 *
 * Este mensaje que se manda para comunicarse con el proceso administrador general
 * @param mtype -> MTYPE_PROCESO_GENERAL
 * @param mtypeProximo -> al mtype que va a contestar - el emisor hace un "(long) getpid()"
 * @param tipoMensaje -> es el tipo de mensaje que se quiere enviar los posibles son :
 * 			1 -> Consultar el lugar del estacionamiento a ocupar
 * 					@param numeroEstacionamiento
 * 					@return lugarDisponible (ocupandolo) en caso de exito o -1 si no hay lugar
 * 			2 -> Informar salida de un auto
 * 					@param posicionOcupada por el auto, tiempoEnElEstacionamiento y numeroEstacionamiento
 * 					@return no da respuesta
 * 			3 -> Consultar Plata recaudada
 * 					@param numeroEstacionamiento
 * 					@return plataRecaudada
 * 			4 -> Consultar lugares disponibles
 * 					@param numeroEstacionamiento
 * 					@return lugarDisponible
 * 			5 -> Termino la simulacion
 *
 * */
typedef struct mensaje {
	long mtype;
	long mtypeProximo;
	int tipoMensaje;
	long numeroEstacionamiento;
	int posicionOcupada;
	int tiempoEnElEstacionamiento;
	int lugarDisponible;
	double plataRecaudada;
};

/*
 * Para enviar en las colas de entrada y salida de autos
 * @param mtype -> es el numero del estacionamiento al cual entra o sale el auto
 *
 * Cuando el tipoMensaje == 5 -> termina simulacion
 * */
typedef struct autoSerializable {
	long mtype;
	int tipoMensaje;
	int idAuto;
	long numeroEstacionamiento;
	int posicionOcupada;
	int tiempoEnElEstacionamiento;
};

#endif /* ESTRUCTURAS_H_ */
